package com.sunday.commlibrary;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import com.google.gson.Gson;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.cache.CacheMode;
import com.lzy.okgo.callback.StringCallback;


import java.text.SimpleDateFormat;
import java.util.List;

import okhttp3.Call;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity {

    private TextView te;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        te = (TextView) findViewById(R.id.text);

        ok();
    }

    private String loginUrl = "https://gf-swagger.tiansheguoji.com:443/mobile/member/login";

    public void Fresco(View view) {
//        Intent intent = new Intent(this , FrescoActivity.class);
//        startActivity(intent);
        getme();
    }

    private String nonce;
    private Long time;

    private void ok() {
        time = System.currentTimeMillis();
        nonce = MD5.random();
        OkGo.post(loginUrl)    // 请求方式和请求url, get请求不需要拼接参数，支持get，post，put，delete，head，options请求
                .tag(this)               // 请求的 tag, 主要用于取消对应的请求
//                .isMultipart(true)       // 强制使用 multipart/form-data 表单上传（只是演示，不需要的话不要设置。默认就是false）
//                .connTimeOut(10000)      // 设置当前请求的连接超时时间
//                .readTimeOut(10000)      // 设置当前请求的读取超时时间
//                .writeTimeOut(10000)     // 设置当前请求的写入超时时间
//                .cacheKey("cacheKey")    // 设置当前请求的缓存key,建议每个不同功能的请求设置一个
//                .cacheTime(5000)         // 缓存的过期时间,单位毫秒
                .cacheMode(CacheMode.IF_NONE_CACHE_REQUEST) // 缓存模式，详细请看第四部分，缓存介绍
                //.addInterceptor(interceptor)                    // 添加自定义拦截器
                //.headers("header1", "headerValue1")             // 添加请求头参数
                //.headers("header2", "headerValue2")             // 支持多请求头参数同时添加
                .params("mobile", "18865515320")                // 添加请求参数
                .params("passwd", "pass")
                .params("timestamp", time)
                .params("nonce", nonce) // 支持多请求参数同时添加
                .params("sign", MD5.md5_32(getSign("18865515320", nonce, "pass", String.valueOf(time))))         // 可以添加文件上传
                //.params("file2", new File("filepath2"))         // 支持多文件同时添加上传
                //.addUrlParams("key", List<String> values)   // 这里支持一个key传多个参数
                //.addFileParams("key", List<File> files)     // 这里支持一个key传多个文件
                //.addFileWrapperParams("key", List< HttpParams.FileWrapper> fileWrappers)//这里支持一个key传多个文件
                //这里给出的泛型为 ServerModel，同时传递一个泛型的 class对象，即可自动将数据结果转成对象返回
                .execute(new JsonCallback<ResultDO<AAA>>() {
                    @Override
                    public void onSuccess(ResultDO<AAA> aaaResultDO) {
                        token = aaaResultDO.getResult().getToken();
                        accountId = aaaResultDO.getResult().getAccountId();
                        te.setText(String.format("token： %s%s%s" ,  token, "\n accountId： " ,accountId));
                    }
                });
    }

    private String getSign(String str2, String str3, String str4, String str5) {
        StringBuilder sign = new StringBuilder();
        sign.append("mobile=" + str2 + "&");
        sign.append("nonce=" + str3 + "&");
        sign.append("passwd=" + str4 + "&");
        sign.append("timestamp=" + str5);
        return sign.toString();
    }
    String url = "https://gf-swagger.tiansheguoji.com:443/mobile/member/getMemberCore";
    private String accountId,token;

    private void getme(){


        OkGo.get(url)    // 请求方式和请求url, get请求不需要拼接参数，支持get，post，put，delete，head，options请求
                .tag(this)               // 请求的 tag, 主要用于取消对应的请求
//                .isMultipart(true)       // 强制使用 multipart/form-data 表单上传（只是演示，不需要的话不要设置。默认就是false）
//                .connTimeOut(10000)      // 设置当前请求的连接超时时间
//                .readTimeOut(10000)      // 设置当前请求的读取超时时间
//                .writeTimeOut(10000)     // 设置当前请求的写入超时时间
//                .cacheKey("cacheKey")    // 设置当前请求的缓存key,建议每个不同功能的请求设置一个
                .cacheTime(5000)         // 缓存的过期时间,单位毫秒
                .cacheMode(CacheMode.IF_NONE_CACHE_REQUEST) // 缓存模式，详细请看第四部分，缓存介绍
                //.addInterceptor(interceptor)                    // 添加自定义拦截器
                //.headers("header1", "headerValue1")             // 添加请求头参数
                //.headers("header2", "headerValue2")             // 支持多请求头参数同时添加
                .headers("accountId", accountId)                // 添加请求参数
                .headers("token", token)
                .headers("timestamp", String.valueOf(System.currentTimeMillis()))
                //.params("file2", new File("filepath2"))         // 支持多文件同时添加上传
                //.addUrlParams("key", List<String> values)   // 这里支持一个key传多个参数
                //.addFileParams("key", List<File> files)     // 这里支持一个key传多个文件
                //.addFileWrapperParams("key", List< HttpParams.FileWrapper> fileWrappers)//这里支持一个key传多个文件
                //这里给出的泛型为 ServerModel，同时传递一个泛型的 class对象，即可自动将数据结果转成对象返回
                .execute(new StringCallback() {

                    @Override
                    public void onSuccess(String s, Call call, Response response) {
                        te.setText(s);
                    }

                    @Override
                    public void onCacheSuccess(String s, Call call) {
                        super.onCacheSuccess(s, call);
                        te.setText("缓存"+s);
                    }
                });


    }

//    private String getTime() {
//        SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//        String date = sDateFormat.format(new java.util.Date());
//        return date;
//    }



}
